package com.wang.springframework.context.event;

import com.wang.springframework.context.ApplicationEvent;
import com.wang.springframework.context.ApplicationListener;

/**
 * @author wangjianhua
 * @Description 事件广播器
 * @date 2021/8/30/030 21:44
 */
public interface ApplicationEventMulticaster {

    /**
     * 添加一个listener 通知所有事件
     * @param listener listener
     */
    void addApplicationListener(ApplicationListener<?> listener);

    /**
     * 从通知列表中移除listener
     * @param listener listener
     */
    void removeApplicationListener(ApplicationListener<?> listener);

    /**
     * 将给定的应用程序事件多播给适当的听众
     * 最终推送时间消息也会经过这个接口方法来处理谁该接收事件。
     * @param event  event
     */
    void multicastEvent(ApplicationEvent event);
}
